#pragma once

#include "ArkGraphicBase.h"
#include "ITexture.h"

class ICamera
{
public:
	virtual void						AddFilter( ITexture* pTexture, DWORD Color, BOOL bNear, BOOL bMulti ) = 0;
	virtual void						AddCameraOff( float xDelta, float yDelta, float zDelta ) = 0;
	virtual void						SetCameraUp( const CVector3f& CameraUp ) = 0;
	virtual void						SetCamera( const CVector3f& CameraPos, const CVector3f& CameraDest ) = 0;
	virtual void						GetCamera( CVector3f& CameraPos, CVector3f& CameraDest ) = 0;
	virtual void						SetCameraPosition( const CVector3f& CameraPos ) = 0;
	virtual void						SetCameraLookAt( const CVector3f& CameraLookAt ) = 0;
	virtual void						GetCamera( CMatrix& View ) = 0;
	virtual void						GetCameraUp( CVector3f& CameraUp ) = 0;
	virtual void						GetCameraDir( CVector3f& CameraDir ) = 0;
	virtual void						GetBillboardNoneX( CMatrix& Billboard ) = 0;
	virtual void						GetBillboardAll( CMatrix& Billboard ) = 0;
	virtual void						GetCameraInvert( CMatrix& ViewInvert ) = 0;
	virtual void						SetProject( float fovY, float zNear, float zFar ) = 0;
	virtual void						SetProject( const CMatrix& Proj ) = 0;
	virtual void						GetProject( float& fovY, float& zNear, float& zFar ) = 0;
	virtual void						GetProject( CMatrix& Proj ) = 0;
	virtual void						GetViewport( CIRect& Viewport ) = 0;
};